package com.dao.impl;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import com.dao.EstablecimientoDAO;
import com.modelo.Establecimiento;

public class IEstablecimientoDAO implements EstablecimientoDAO {
	ArrayList<Establecimiento> establecimientos;
	Establecimiento establecimiento;
	private JdbcTemplate jdbcTemplate;

	@Autowired
	public void setJdbcTemplate(JdbcTemplate jdbcTemplate){
		try{
			this.jdbcTemplate = jdbcTemplate;
		}catch(Exception e){
			System.out.println("IEstablecimientoDAO: setJdbcTemplate() "+e.getMessage());
		}
	}
	@Override
	public Establecimiento buscarEstablecimientoPorUsuario(int id) {
		establecimiento = new Establecimiento();
		System.out.println("Usuario id para buscas estab "+id);
		String sql = "select * from establecimiento where id = ?";
		try{
			establecimiento = jdbcTemplate.queryForObject(sql,new Object[]{id},new RowMapper<Establecimiento>(){
																					public Establecimiento mapRow(ResultSet rs, int numRows)
																							throws SQLException {
																						// TODO Auto-generated method stub
																						Establecimiento e = new Establecimiento();
																						e.setDireccion(rs.getString("direccion"));
																						e.setId(rs.getInt("id"));
																						e.setNombre(rs.getString("nombre"));
																						return e;
																					}	
			});
		}catch(Exception e){
			System.out.println("IEstablecimientoDAO buscarEstablecimientoporUsuaro() "+e.getMessage());
		}
		System.out.println("IEstablecimientoDAO idEstab "+establecimiento.getId());
		return establecimiento;
	}

	@Override
	public List<Establecimiento> mostrar() {
		establecimientos = new ArrayList<Establecimiento>();
		String sql = "select * from establecimiento";
		try{
			List<Map<String, Object>> filas = jdbcTemplate.queryForList(sql);
			for(Map m : filas){
				Establecimiento e = new Establecimiento();
				
				e.setId(Integer.parseInt(String.valueOf(m.get("id"))));
				e.setDireccion(String.valueOf(m.get("direccion")));
				e.setNombre(String.valueOf(m.get("nombre")));
				System.out.println("IEstablecimientoDAO mostrar() "+e.getId()+" "+e.getNombre()+" "+e.getDireccion());
				establecimientos.add(e);
			}
			
		}catch(Exception e){
			System.out.println("IEstablecimientoDAO mostrar() "+e.getMessage());
		}
		return establecimientos;
	}

}
